package BESA.SystemLevel.transactions.gcc;

import java.rmi.Remote;
import java.rmi.RemoteException;


public interface GCC extends Remote {
	
	/**
	 * Entra en etapa de validacion para una transaccion.
	 * Vota que SI si la transaccion no fue conflictiva, de lo contrario vota que NO.
	 * @param idTransaction
	 * @param transactionLogicalTime
	 * @return true si vota SI; false si vota NO
	 * @throws RemoteException
	 */
	public boolean getVote (long idTransaction, long validationNumber) throws RemoteException;

	/**
	 * Reemplaza el handler de la version consumada por el de la copia, asi convirtiendose
	 * �sta en la consumada.
	 * @param idTransaction
	 * @throws RemoteException
	 */
	public void commit (long idTransaction, long transactionLogicalTime) throws RemoteException;

	/**
	 * Borra las copias de la transaccion.
	 * @param idTransaction
	 * @throws RemoteException
	 */
	public void abort (long idTransaction) throws RemoteException;

}
